package com.cskaoyan.mapper;

import com.cskaoyan.bean.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 创建日期: 2022/03/28 17:17
 *
 * @author ciggar
 */
public interface UserMapper {

    User selectUserById(@Param("id") Integer id);

    User selectUserByIdUseIf(@Param("uid") Integer id);

    // 通过user对象查询
    List<User> selectUserListByUser(@Param("user") User user);

    // 假如传入的id 大于 3，那么查询id最大的用户，否则查询id最小的用户
    User selectUserListById(@Param("id") Integer id);

    // 根据id修改user的值，假如成员变量没有值，那么不修改
    int updateUserByIdSelective(@Param("user") User user);

    // 根据id修改user的值，假如成员变量没有值，那么不修改
    int updateUserByIdSelectiveUseSet(@Param("user") User user);

    // use select key
    int insertUserReturnAutoIncrementId(@Param("user") User user);

    // useGeneratedKeys
    int insertUserUseGeneratedKeys(@Param("user") User user);


    // 批量插入 插入一个List
    int insertUserBatch(@Param("userList") List<User> userList);

    // 假如参数没有注解，后面去取参数的时候，要使用 Collection | arg0 来接收
    int insertUserBatch2(List<User> userList);

    // 批量插入，插入数组 - 1. 使用注解
    int insertUserArrayBatch(@Param("users") User[] users);

    // 批量插入，插入数组 - 2. 不使用注解
    int insertUserArrayBatch2(User[] users);

    //     In 查询
    List<User> selectUserListByIds(@Param("ids") List<Integer> ids);

}
